home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / comm2 / ftp-mail.lha / FTP-Mail / StripMail.rexx < prev   
OS/2 REXX Batch file  |  1995-10-11  |  2KB  |  129 lines

  1. /* StripMail - split UUCP-Mail-Folder in small pieces
  2. **
  3. ** Call:     rx StripMail <fromfile
  4. **
  5. ** Makes out of a mailfolder for every mail an own file "tmp/mail.<x>"
  6. ** im drawer "tmp".
  7. **
  8. */
  9.  
  10. /* eigene Fehlerbehandlung */
  11. SIGNAL ON SYNTAX
  12. SIGNAL ON ERROR
  13. SIGNAL ON IOERR
  14. /*SIGNAL ON NOVALUE*/
  15. SIGNAL ON BREAK_C
  16. SIGNAL ON BREAK_D
  17. SIGNAL ON BREAK_E
  18. SIGNAL ON BREAK_F
  19. SIGNAL ON HALT
  20.  
  21. /* Hole Programmumgebung, hole daraus den Namen und Pfad von uu2zc */
  22. PARSE SOURCE x
  23. PARSE VAR x . . progname path .
  24. version    = '$VER: StripMail 1.00 (11-Oct-1995)'
  25. author      = 'Alexander Aulbach'
  26.  
  27.  
  28. SAY '-- '||progname||', '||version||' by '||author||'.'
  29. SAY
  30.  
  31. IF ~EXISTS("tmp") THEN ADDRESS COMMAND MakeDir tmp
  32.  
  33.  
  34. /* Suche nach erster uucp-mail in folder. SCHLÜSSELWORT: "From " */
  35. lin=""
  36. DO WHILE ~EOF(STDIN) & LEFT(lin,5)~="From "
  37.   lin=READLN(STDIN)
  38. END
  39.  
  40. IF EOF(STDIN) THEN SIGNAL LEAVE /* Keine Mail gefunden! */
  41.  
  42. iname="tmp/mail."
  43. i=1
  44.  
  45. DO WHILE ~EOF(STDIN)
  46.   DO WHILE EXISTS(iname||i)
  47.    i=i+1
  48.   END
  49.  
  50.   DO WHILE ~OPEN('out',iname||i,"W")
  51.     SAY progname' : Error while opening file "'iname||i'"'
  52.     SIGNAL LEAVE
  53.   END
  54.  
  55.   SAY progname" : Write "iname||i
  56.  
  57.   /* Wandle alle Mails um */
  58.   CALL WRITELN('out',lin)
  59.   lin=READLN(STDIN)
  60.   DO WHILE ~EOF(STDIN) & LEFT(lin,5)~="From "
  61.     CALL WRITELN('out',lin)
  62.     lin=READLN(STDIN)
  63.   END
  64.   CALL CLOSE ('out')
  65.  
  66. END
  67.  
  68.  
  69. EXIT
  70.  
  71.  
  72.  
  73.  
  74. /*----------------------------------------------------------------------------
  75. Errorhandling:
  76. ----------------------------------------------------------------------------*/
  77. Showsource:
  78. PARSE ARG sig
  79. SAY
  80. SAY "..."
  81. DO i=sig-2 TO sig+1
  82.   SAY i SOURCELINE(i)
  83.   IF i=sig THEN SAY "^^^^^^^^^^^^^^^^^^^^^^^^ Line, in which error occured!"
  84. END
  85. SAY "..."
  86. RETURN
  87.  
  88. BREAK_C:
  89. BREAK_D:
  90. BREAK_E:
  91. BREAK_F:
  92. HALT:
  93. SIGNAL OFF BREAK_C
  94. SIGNAL OFF BREAK_D
  95. SIGNAL OFF BREAK_E
  96. SIGNAL OFF BREAK_F
  97. SIGNAL OFF HALT
  98.   trace o
  99.   PARSE SOURCE x
  100.   PARSE VAR x . . progname .
  101.   SAY
  102.   SAY 'Program 'progname' stopped, Line: 'SIGL
  103. EXIT(5)
  104.  
  105. LEAVE:
  106.   trace o
  107.   PARSE SOURCE x
  108.   PARSE VAR x . . progname .
  109.   SAY '       Programm found some strange data!'
  110.   SAY '       Error/Abort in Program 'progname', near line: 'SIGL
  111. EXIT(10)
  112.  
  113. NOVALUE:
  114.   RC=39
  115. SYNTAX:
  116. ERROR:
  117. IOERR:
  118.  
  119.   trace o
  120.   PARSE SOURCE x
  121.   PARSE VAR x . . progname .
  122.   SAY 'ERROR: Program Error 'RC' in 'progname
  123.   SAY '       "'ERRORTEXT(RC)'"'
  124.   SAY '       Line: 'SIGL
  125.   CALL ShowSource SIGL
  126. EXIT(20)
  127.  
  128.  
  129.